BITMAP Function
Syntax
Arguments
- bitmap_nameCharacter
The name of the bitmap.
- XPosNumeric
The horizontal coordinate of the bitmap's upper left corner.
- YPosNumeric
The vertical coordinate of the bitmap's upper left corner.
- WidthNumeric
The width of the bitmap is created dynamically. The width of the bitmap.
- HeightNumeric
The height of the bitmap is created dynamically. The height of the bitmap.
- bitmap_styleCharacter
Default = "TRANPARENT". The following values are possible. Combine values in a comma delimited list, as in: " value1,value2,value3 ". ABSOLUTE,BESTFIT,STRETCH,TILE combined optionally with OPAQUE combined optionally with BLACKONWHITE,COLORONCOLOR,HALFTONE,WHITEONWHITE.
- "TRANSPARENT"
Scales the bitmap before sending it to the printer.
- "ABSOLUTE"
Do not stretch or crop the image.
- "BEST-FIT"
Scale the image so that either height or width fits exactly, and the other dimension is cropped to fit.
- "STRETCH"
Scale, but do not distort the image to fit the space.
- "TILE"
If the image is smaller than the space, tile the image as necessary to fill the space.
- "HALFTONE"
Best quality for photos. Does sampling instead of eliminating pixels (produces an antialiased image).
- "COLORONCOLOR"
Do not favor any color over another on the scale.
- "WHITEONBLACK"
Preserve white pixels at the expense of black pixels.
- "BLACKONWHITE"
Preserve black pixels at the expense of white pixels.
- "ROTATE"
Rotate image 180 degrees.
- "ROTATE-LEFT"
Rotate image 90 degrees left.
- "ROTATE-RIGHT"
Rotate image 90 degrees right.
Description
BITMAP() draws a bitmap in memory.
Example
Get the original color image, then extract the color data and the alpha channel data.
png_data = file.to_blob("c:\documents\Xbasic Reference\Images\toucan.png") rgb_data = png_to_bitmap(png_data, "R") trans_data = png_to_bitmap(png_data, "A")
Create two bitmaps from the color data and the alpha channel data.
ui_bitmap_load("rgb", rgb_data) ui_bitmap_load("trans", trans_data)
Calculate the positions of the three images.
pixsize = ui_bitmap_info_get(rgb_data, "w,h") xpix = val( word(pixsize, 1, ",") ) ypix = val( word(pixsize, 2, ",") ) xperin = ui_info(4) yperin = ui_info(5) width = xpix/xperin height = ypix/yperin
Combine the three images.
ui_bitmap_create("combine", width, height) stone_data = file.to_blob("C:\WINDOWS\Greenstone.bmp") ui_bitmap_load("Stone", stone_data) ui_bitmap_draw("combine", <<%code% bitmap("stone", 0, 0) bitmap_alpha("rgb", 0, 0, "trans") %code%)
put description here
ui_dlg_box("image", <<%dlg% {image=rgb} {image=trans} {image=combine} %dlg%)
To print a photo.
bitmap("all",0,0,width,height,"BESTFIT,HALFTONE")
The following script demonstrates a thumbnail generator that uses these features.
filename = ui_get_file("Select Image File", "(*.jpg") width = 41/96 height = 55/96 imagebits = file.to_blob(filename) bmpbits = jpeg_to_bitmap(imagebits) ui_bitmap_load("selected_picture", bmpbits) ui_bitmap_create("thumbnail", width, height) ui_bitmap_draw("thumbnail",<<%code% bitmap("selected_picture",0,0,width,height,"best-fit,opaque,rotate-right,halftone") 'bitmap("selected_picture",0,0,1,1,"best-fit,rotate-right,halftone") %code%) thumbbits = ui_bitmap_save("thumbnail") dlg_image_format = "Jpeg Image Thumbnails;Image|" dlg_image_desc1 = "Quality|" dlg_image_desc2 = "Size|" for quality = 0 to 10 jbits = bitmap_to_jpeg(thumbbits,quality*10) imagename = "Thumb_"+quality*10 ui_bitmap_load(imagename, jpeg_to_bitmap(jbits) ) dlg_image_format = dlg_image_format + "|{image="+imagename+"}" dlg_image_desc1 = dlg_image_desc1 + "| "+(quality*10) dlg_image_desc2 = dlg_image_desc2 + "| "+jbits.size() next ui_dlg_box("",dlg_image_format+";"+dlg_image_desc1+";"+dlg_image_desc2+";")
This code reads a JPEG image, rotates it by 90 degrees, then saves it.
ui_bitmap_load("input", bb) ui_bitmap_draw("input",<<%code% w = bitmap_width("input") h = bitmap_height("input") %code%) ui_bitmap_create("output", h, w) ui_bitmap_draw("output",<<%code% bitmap("input",0,0,h,w,"ROTATE-LEFT,HALFTONE") bb = ui_bitmap_save("output") %code%) file.From_blob("c:\output.jpg", bb)
Limitations
BITMAP() is only used in the Code section of UI_BITMAP_DRAW() and UI_SCREEN_DRAW().
See Also